package com.seu.magicfilter.utils;

import android.content.Context;

import com.seu.magicfilter.advanced.MagicAmaroFilter;
import com.seu.magicfilter.advanced.MagicAntiqueFilter;
import com.seu.magicfilter.advanced.MagicBeautyFilter;
import com.seu.magicfilter.advanced.MagicBlackCatFilter;
import com.seu.magicfilter.advanced.MagicBrannanFilter;
import com.seu.magicfilter.advanced.MagicBrooklynFilter;
import com.seu.magicfilter.advanced.MagicCalmFilter;
import com.seu.magicfilter.advanced.MagicCoolFilter;
import com.seu.magicfilter.advanced.MagicCrayonFilter;
import com.seu.magicfilter.advanced.MagicEarlyBirdFilter;
import com.seu.magicfilter.advanced.MagicEmeraldFilter;
import com.seu.magicfilter.advanced.MagicEvergreenFilter;
import com.seu.magicfilter.advanced.MagicFreudFilter;
import com.seu.magicfilter.advanced.MagicHealthyFilter;
import com.seu.magicfilter.advanced.MagicHefeFilter;
import com.seu.magicfilter.advanced.MagicHudsonFilter;
import com.seu.magicfilter.advanced.MagicImageAdjustFilter;
import com.seu.magicfilter.advanced.MagicInkwellFilter;
import com.seu.magicfilter.advanced.MagicKevinFilter;
import com.seu.magicfilter.advanced.MagicLatteFilter;
import com.seu.magicfilter.advanced.MagicLomoFilter;
import com.seu.magicfilter.advanced.MagicN1977Filter;
import com.seu.magicfilter.advanced.MagicNashvilleFilter;
import com.seu.magicfilter.advanced.MagicNostalgiaFilter;
import com.seu.magicfilter.advanced.MagicPixarFilter;
import com.seu.magicfilter.advanced.MagicRiseFilter;
import com.seu.magicfilter.advanced.MagicRomanceFilter;
import com.seu.magicfilter.advanced.MagicSakuraFilter;
import com.seu.magicfilter.advanced.MagicSierraFilter;
import com.seu.magicfilter.advanced.MagicSketchFilter;
import com.seu.magicfilter.advanced.MagicSkinWhitenFilter;
import com.seu.magicfilter.advanced.MagicSunriseFilter;
import com.seu.magicfilter.advanced.MagicSunsetFilter;
import com.seu.magicfilter.advanced.MagicSutroFilter;
import com.seu.magicfilter.advanced.MagicSweetsFilter;
import com.seu.magicfilter.advanced.MagicTenderFilter;
import com.seu.magicfilter.advanced.MagicToasterFilter;
import com.seu.magicfilter.advanced.MagicValenciaFilter;
import com.seu.magicfilter.advanced.MagicWaldenFilter;
import com.seu.magicfilter.advanced.MagicWarmFilter;
import com.seu.magicfilter.advanced.MagicWhiteCatFilter;
import com.seu.magicfilter.advanced.MagicXproIIFilter;
import com.seu.magicfilter.base.gpuimage.GPUImageBrightnessFilter;
import com.seu.magicfilter.base.gpuimage.GPUImageContrastFilter;
import com.seu.magicfilter.base.gpuimage.GPUImageExposureFilter;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.base.gpuimage.GPUImageHueFilter;
import com.seu.magicfilter.base.gpuimage.GPUImageSaturationFilter;
import com.seu.magicfilter.base.gpuimage.GPUImageSharpenFilter;

public class MagicFilterFactory{
	
	private static MagicFilterType filterType = MagicFilterType.NONE;

	private static Context mContext;

	public static void initContext(Context context) {
		mContext = context;
	}

	public static GPUImageFilter initFilters(MagicFilterType type) {
		filterType = type;
		switch (type) {
			case WHITECAT:
				return new MagicWhiteCatFilter();
			case BLACKCAT:
				return new MagicBlackCatFilter();
			case SKINWHITEN:
				return new MagicSkinWhitenFilter();
			case BEAUTY:
				return new MagicBeautyFilter();
			case ROMANCE:
				return new MagicRomanceFilter();
			case SAKURA:
				return new MagicSakuraFilter();
			case AMARO:
				return new MagicAmaroFilter();
			case WALDEN:
				return new MagicWaldenFilter();
			case ANTIQUE:
				return new MagicAntiqueFilter();
			case CALM:
				return new MagicCalmFilter();
			case BRANNAN:
				return new MagicBrannanFilter();
			case BROOKLYN:
				return new MagicBrooklynFilter();
			case EARLYBIRD:
				return new MagicEarlyBirdFilter();
			case FREUD:
				return new MagicFreudFilter();
			case HEFE:
				return new MagicHefeFilter();
			case HUDSON:
				return new MagicHudsonFilter();
			case INKWELL:
				return new MagicInkwellFilter();
			case KEVIN:
				return new MagicKevinFilter();
			case LOMO:
				return new MagicLomoFilter();
			case N1977:
				return new MagicN1977Filter();
			case NASHVILLE:
				return new MagicNashvilleFilter();
			case PIXAR:
				return new MagicPixarFilter();
			case RISE:
				return new MagicRiseFilter();
			case SIERRA:
				return new MagicSierraFilter();
			case SUTRO:
				return new MagicSutroFilter();
			case TOASTER2:
				return new MagicToasterFilter();
			case VALENCIA:
				return new MagicValenciaFilter();
			case XPROII:
				return new MagicXproIIFilter();
			case EVERGREEN:
				return new MagicEvergreenFilter();
			case HEALTHY:
				return new MagicHealthyFilter();
			case COOL:
				return new MagicCoolFilter();
			case EMERALD:
				return new MagicEmeraldFilter();
			case LATTE:
				return new MagicLatteFilter();
			case WARM:
				return new MagicWarmFilter();
			case TENDER:
				return new MagicTenderFilter();
			case SWEETS:
				return new MagicSweetsFilter();
			case NOSTALGIA:
				return new MagicNostalgiaFilter();
			case SUNRISE:
				return new MagicSunriseFilter();
			case SUNSET:
				return new MagicSunsetFilter();
			case CRAYON:
				return new MagicCrayonFilter();
			case SKETCH:
				return new MagicSketchFilter();
			//image adjust
			case BRIGHTNESS:
				return new GPUImageBrightnessFilter();
			case CONTRAST:
				return new GPUImageContrastFilter();
			case EXPOSURE:
				return new GPUImageExposureFilter();
			case HUE:
				return new GPUImageHueFilter();
			case SATURATION:
				return new GPUImageSaturationFilter();
			case SHARPEN:
				return new GPUImageSharpenFilter();
			case IMAGE_ADJUST:
				return new MagicImageAdjustFilter();
			default:
				return null;
		}
	}
	
	public static MagicFilterType getCurrentFilterType(){
		return filterType;
	}

	public static Context getCurrentContext(){
		return mContext;
	}
}
